<!DOCTYPE html>
<html>
    <!-- 
    noVNC Example: Automatically connect on page load.
    Copyright (C) 2011 Joel Martin
    Licensed under LGPL-3 (see LICENSE.txt)

    Connect parameters are provided in query string:
        http://example.com/?host=HOST&port=PORT&encrypt=1&true_color=1
    -->
    <head>
        <title>noVNC</title>
        <meta http-equiv="X-UA-Compatible" content="chrome=1">
        <link rel="stylesheet" href="include/plain.css" title="plain">
        <!--
        <script type='text/javascript' 
            src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
        -->
        <script src="include/vnc.js"></script>
    </head>

    <body style="margin: 0px;">
        <div id="VNC_screen">
            <div id="VNC_status_bar" class="VNC_status_bar" style="margin-top: 0px;">
                <table border=0 width="100%"><tr>
                    <td><div id="VNC_status">Loading</div></td>
                    <td width="1%"><div id="VNC_buttons">
                        <input type=button value="Send CtrlAltDel"
                            id="sendCtrlAltDelButton">
                            </div></td>
                </tr></table>
            </div>
            <canvas id="VNC_canvas" width="640px" height="20px">
                Canvas not supported.
            </canvas>
        </div>

        <script>
        /*jslint white: false */
        /*global window, $, Util, RFB, */
        "use strict";

        var rfb;

        function passwordRequired(rfb) {
            var msg;
            msg = '<form onsubmit="return setPassword();"';
            msg += '  style="margin-bottom: 0px">';
            msg += 'Password Required: ';
            msg += '<input type=password size=10 id="password_input" class="VNC_status">';
            msg += '<\/form>';
            $D('VNC_status_bar').setAttribute("class", "VNC_status_warn");
            $D('VNC_status').innerHTML = msg;
        }
        function setPassword() {
            rfb.sendPassword($D('password_input').value);
            return false;
        }
        function sendCtrlAltDel() {
            rfb.sendCtrlAltDel();
            return false;
        }
        function updateState(rfb, state, oldstate, msg) {
            var s, sb, cad, level;
            s = $D('VNC_status');
            sb = $D('VNC_status_bar');
            cad = $D('sendCtrlAltDelButton');
            switch (state) {
                case 'failed':       level = "error";  break;
                case 'fatal':        level = "error";  break;
                case 'normal':       level = "normal"; break;
                case 'disconnected': level = "normal"; break;
                case 'loaded':       level = "normal"; break;
                default:             level = "warn";   break;
            }

            if (state === "normal") { cad.disabled = false; }
            else                    { cad.disabled = true; }

            if (typeof(msg) !== 'undefined') {
                sb.setAttribute("class", "VNC_status_" + level);
                s.innerHTML = msg;
            }
        }

        window.onload = function () {
            var host, port, password, token;

            $D('sendCtrlAltDelButton').onclick = sendCtrlAltDel;

            document.title = unescape(WebUtil.getQueryVar('title', 'noVNC'));
            token = WebUtil.getQueryVar('token');
            host = window.location.hostname;
            port = window.location.port;
            password = WebUtil.getQueryVar('password', '');
            if ((!host) || (!port)) {
                updateState('failed',
                    "Must specify host and port in URL");
                return;
            }

            rfb = new RFB({'target':       $D('VNC_canvas'),
                           'encrypt':      WebUtil.getQueryVar('encrypt', false),
                           'true_color':   WebUtil.getQueryVar('true_color', true),
                           'local_cursor': WebUtil.getQueryVar('cursor', true),
                           'shared':       WebUtil.getQueryVar('shared', true),
                           'updateState':  updateState,
                           'onPasswordRequired':  passwordRequired});

            WebUtil.createCookie('token', token, 1)
            rfb.connect(host, port, password);
        };
        </script>

    </body>
</html>

